export const offsetDomTop = element => {
	var offest = {
		top: 0,
	};

	var _position;

	getOffset(element, true);

	return offest;

	// 递归获取 offset, 可以考虑使用 getBoundingClientRect
	function getOffset(node, init) {
		// 非Element 终止递归
		if (node.nodeType !== 1) {
			return;
		}
		_position = window.getComputedStyle(node)["position"];

		// position=static: 继续递归父节点
		if (typeof init === "undefined" && _position === "static") {
			getOffset(node.parentNode);
			return;
		}
		offest.top = node.offsetTop + offest.top - node.scrollTop;

		// position = fixed: 获取值后退出递归
		if (_position === "fixed") {
			return;
		}

		getOffset(node.parentNode);
	}
};

// 实现jquery.animate方法对scrollTop的实现
export const scrolltoToc = position => {
	document.body.scollTop = position;
	document.documentElement.scrollTop = position;
	return;
	// scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
	// let curr_top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
	// let time_id = setInterval(() => {
	// 	curr_top += 10;

	// 	//网页被卷去的高： document.body.scrollTop;
	// 	document.body.scollTop = curr_top;

	// 	// document.documentElement.scrollTop(获取或设置滚动条位置)
	// 	document.documentElement.scrollTop = curr_top;

	// 	if (curr_top >= position) {
	// 		clearInterval(time_id);
	// 	}
	// }, 10);
};

// 监听楼层
export const monitorFloor = (index, top, elArr, afterTop) => {
	// 针对数组为0时，进行抛错的解决
	if (elArr.length === 0) return -1;
	// 刚进入页面处于-1，谁也没有选中，不需要删掉样式
	if (index !== -1 && elArr[index]) {
		elArr[index].active = false;
	}
	const len = elArr.length;
	// 求出0到倒输第二个元素的top确定点
	for (let i = 0; i < len - 1; i++) {
		if (top >= elArr[i].top && top < elArr[i + 1].top) {
			elArr[i].active = true;
			return i;
		}
	}
	// 倒数第一个判断点在点赞收藏按钮上面，所以另作判断
	if (top >= elArr[len - 1].top && top < afterTop) {
		elArr[len - 1].active = true;
		return len - 1;
	}
	return -1;
};
